/**
 *
 */
package com.rf.richfitwheel.admin.sys.service;

import com.rf.richfitwheel.admin.sys.model.Station;
import com.rf.richfitwheel.admin.sys.vo.UserVO;
import com.rf.richfitwheel.common.utils.PageUtils;
import com.rf.richfitwheel.common.utils.TreeUtils;
import net.sf.json.JSONArray;

import java.util.List;
import java.util.Map;

/**
 * 岗位管理
 * @author hushouquan
 *
 */
public interface StationService {
    /**
     * 分页查询岗位数据
     * @param params
     * @return
     * @throws Exception
     */
    PageUtils queryPage(Map<String, Object> params) throws Exception;

    /**
     * 根据id查询岗位信息
     * @param id
     * @return
     */
    Station selectById(String id);

    /**
     * 新增岗位
     * @param station
     * @param userVO
     */
    void addStation(Station station, UserVO userVO);

    /**
     * 修改岗位
     * @param station
     * @param userVO
     */
    void updateStation(Station station, UserVO userVO);

    /**
     * 删除岗位信息
     * @param ids
     */
    void deleteBatch(String[] ids);

    /**
     * 批量清除岗位资源权限
     * @param ids
     * @param userVO
     */
    void deleteStationRes(String[] ids, UserVO userVO);

    /**
     * 根据租户id获取岗位树
     * @param tenantId
     * @return
     * @throws Exception
     */
    List<TreeUtils> getAllStationTreeUtilsByTenantId(String tenantId) throws Exception;

    /**
     * 根据租户id获取岗位树，icon属性存的是id
     * @param tenantId
     * @return
     * @throws Exception
     */
    List<TreeUtils> getAllStationTreeUtilsIconFnIdByTenantId(String tenantId) throws Exception;

    List<Station> queryStationByOrgIds(List<String> orgIds);

    List<Station> queryStationByDeptId(String deptId);


    /**
     * 根据用户ID获取岗位信息
     * @param userId
     * @return
     */
    JSONArray getStationDataByUserId(String userId);

    /**
     * 根据参数获取岗位机构信息
     * @param params
     * @return
     */
    List<Station> getStationDataByOrgAndModule(Map<String, Object> params);

    /**
     * 根据所属模块+岗位名称获取岗位内容
     * @param params
     * @return
     */
    List<Map<String, Object>> getUserIdListByModuleAndStation(Map<String, Object> params);

    List<Station> getStationsByOrgId(String orgId, String moduleType);

    boolean checkStationName(String orgId, String moduleType, String stationName);

    Station getStationByOrgIdAndModuleTypeAndStationName(String orgId, String moduleType, String stationName);
}
